package htw.list;

// Programmiersprachen 1 (Java)
// Prof. Dr. H. G. Folz
// 2001
//
//
 
import java.util.*;

/** Implementierung eines String-Stack */
public class StringStack extends Stack {
   private List l;

   public StringStack() {
       l = new List();
   }

   /** Ist der Stack voll?      */
   public boolean full  () {
       return false;    // kann theoretisch nicht passieren
   }

   /** Ein Element in den Stack einfuegen
       Vorbedingung: !full() && o vom Typ String            */
   public void push (Object o)  {
       assert(!full() && (o instanceof String));
       l.addFirst(o);
   }

   /** Oberstes Element Entfernen
       Vorbedingung: !empty()           */
   public void pop () {
       assert(!empty());
       l.removeFirst();
   }

   /** Wert des obersten Elementes zurueckgeben
       Vorbedingung: !empty()           */
   public Object top ()  {
       assert(!empty());
       return l.getFirst();
   }

   /** Anzahl Elemente des Stack        */
   public int size() {
       return l.size();
   }

   public String toString() {
       StringBuffer sb = new StringBuffer();
//        Iterator it = l.iterator();
//        while (it.hasNext()) {
//            sb.append(it.next() + "  ");
//        }
       for (Object o : l)
           sb.append(o).append("  ");
       return sb.toString();
   }
}
